char [ ] 的长度

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:11:09
char code[] =
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
"\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00"
"\x00\x00\xcd\x80\xe8\xdb\xff\xff\xff\x4e\x6f\x77\x20\x49\x20\x70\x77\x6e"
"\x20\x79\x6f\x75\x72\x20\x63\x6f\x6d\x70\x75\x74\x65\x72\x00";

printf("%d",strlen(code));

输出是4, 这是代表什么意思呢?长度4bytes?高手指教

其实这个和后面的数据都没有关系,注意这一段,在第一个里面的
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
到第五个是\x00 也就是\0结束符,strlen计算字符串长度的时候是以\0结束符作为标志的~ 所以,strlen遇到了那个\x00后,就立即返回长度只有4了..

同理如果你把那个\x00改为\x01的话,他就会遇到后面那个\x00,会返回5..

输出的是数组元素的长度,即是你里面有几个元素。

第一个:
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
第二个:
"\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00"
第三个:
"\x00\x00\xcd\x80\xe8\xdb\xff\xff\xff\x4e\x6f\x77\x20\x49\x20\x70\x77\x6e"
第四个:
"\x20\x79\x6f\x75\x72\x20\x63\x6f\x6d\x70\x75\x74\x65\x72\x00";